Skip to content

Звуки по новой (та ветка безнадёжно затеряна, честно) #428

Open
Keendaj wants to merge 24 commits intodevelopfrom
backup-32-Sound
Open

Звуки по новой (та ветка безнадёжно затеряна, честно) #428
Keendaj wants to merge 24 commits intodevelopfrom
backup-32-Sound

Conversation

@Keendaj
Copy link
Copy Markdown
Collaborator

@Keendaj Keendaj commented Apr 3, 2026

Close #32
И так, как пользоваться
(не гд)1) SoundManager - ядро, чтобы оно работало нужно на каждом уровне вызывать при загрузке InitGlobalAudio
С передачей туда Mix и мапы SoundClassов (1 раз делаем для каждого уровня). Уже есть готовый mix и sound classы, не знаю, нужно ли будет создавать ещё какие-то

(не гд) 2) EG2IASoundType - просто enum для более удобной работы со звуком, можно будет потом получать значения глобал звука или ставить их с помощью него (я так и не понял останутся ли настройки)

(для гд важно)3) FSoundConfig - структура с настройками звука
Sound - сам звук, можно пихать просто wav, можно sound cue (ещё почитал про meta sounds, их по идее тоже можно)
WorldLocation - ставит координату звука, если нужно
AttachToComponent - то к чему звук будет прикреплён, выбираем нужного актора (любого), можем выбрать у него компонент, если нужно, если нет, тогда он приконектится к root component
AttachmentRules - как именно прикрепляется, если здесь snap to target (приклеится к компоненту самому звук), то world location не имеет смысла настраивать
VolumeMultiplier и PitchMultiplier - отдельные от глобальных настройки для звука (чтобы можно было какой-то звук относительно другого сделать тише и т.п., и т.д.)
bIsPlayingOneTime - звук проигрывается только один раз при первом вызове play, в остальные разы игнорируется play (вынес в манагер, чтобы каждый раз не писать в коде)
bAutoDestroy - просто звук уничтожается сразу после окончания, если вдруг не захотим проигрывать вообще по новой (не связан никак с bIsPlayingOneTime)
bIs2D - переключаем звук в 2D версию (для фоновой музыки либо чего-то, что должно проиграться вообще везде)
ResolvedComponent - сама система всё решит, куда вы там хотите прикрепить, поэтому не трогайте, оно всё равно перезапишется

(не для гд)3) SoundComponent
SetupSounds - отдельная мапа, куда можно сваливать все звуки для данного актора (в моём представлении, прогер пишет код, в коде пишет нужные названия звуков, добавляет их и гд их сможет настроить, ну либо просто сделайте свои переменные, если очень хочется)
Ссылка на звук отдаётся в виде idшки, с помощью неё можно использовать звук в других функциях
Если не получится создать звук, то отдастся -1
Также все сеттеры возвращают bool, чтобы можно было понять, сработало или нет

Паттерн действия:
AddSound(soundconfig) -> сохраняем id любым удобным способом (отдельно я ничего не делал для этого) -> вызываем остальные функции с помощью id

@Keendaj Keendaj self-assigned this Apr 3, 2026
@Keendaj Keendaj added the dev Задача программистов label Apr 3, 2026
@Keendaj Keendaj added this to G2I-Game Apr 3, 2026
@irazaurus
Copy link
Copy Markdown
Collaborator

братан, тебя с такими коммитами никуда не пропустят

Copy link
Copy Markdown
Collaborator

@irazaurus irazaurus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

сори, я не все прям посмотрела, тк устала, но anyways тебе тут есть, что поправить.

  1. мне кажется почти во всех функциях можно параметры/часть параметров const сделать, чекни этот момент
  2. поменяй сырые ссылки на TObjectPtr, например. сырые ссылки вообще лучше никогда не использовать в качестве параметров класса, но можно для передачи в функцию в качестве аргумента или локальном создании тоже внутри функции (https://forums.unrealengine.com/t/when-should-tobjectptr-t-be-used-outside-of-upropertys/2583905)
  3. почисти историю коммитов. пообъединяй их, напиши нормальные названия и описания. Алина прям подробный гайд писала на один из моих пул реквестов (см. последний зарезолвенный коммент здесь #310 (review) -- там же она написала про то, что лучше иметь меньше 10 коммитов на один пр)
  4. ненужные изменения gitignore
  5. и еще парочка вопросов у меня появилась по коду

DerivedDataCache/*

enc_temp_folder/*
TODO.txt
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

убери это лол

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нет.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А это что за файл?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я туда пишу обычно, что мне осталось делать и что я сделал, чтобы это в одном месте лежало.
Это же просто один txt в gitignore...

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ясн, что это
Зачем это в файлах проекта, а не на компе где-то делать, неясн
Но ок, пусть будет

@github-project-automation github-project-automation bot moved this to In progress in G2I-Game Apr 3, 2026
@irazaurus
Copy link
Copy Markdown
Collaborator

и еще -- как добавлять звуки на уровень гдшникам? это без кода можно сделать?

Copy link
Copy Markdown
Owner

@PosAlina PosAlina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Миллион констов
  2. Вынести всё в папку Sound
  3. Немного вопросов по логике (смущают слабые ссылки и ручной дестрой компонент)
  4. Почему OWrldSubsystem, а не GameSubsystem?

@Keendaj
Copy link
Copy Markdown
Collaborator Author

Keendaj commented Apr 3, 2026

и еще -- как добавлять звуки на уровень гдшникам? это без кода можно сделать?

Можно сделать без кода, но тогда он в манагер не попадёт :/

@Keendaj
Copy link
Copy Markdown
Collaborator Author

Keendaj commented Apr 3, 2026

Так к неймингу я сейчас морально не готов, потом переименую коммиты, остальное ответил / сейчас запушу

@Keendaj
Copy link
Copy Markdown
Collaborator Author

Keendaj commented Apr 3, 2026

Просто признайтесь, вам просто хотелось оставить комментарии
image

@Keendaj
Copy link
Copy Markdown
Collaborator Author

Keendaj commented Apr 3, 2026

Коммиты буду переназывать уже после того как все правки закончатся

PosAlina

This comment was marked as resolved.

Copy link
Copy Markdown
Owner

@PosAlina PosAlina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем в таком странном виде константу добавлять?
И коммиты переименуй)

@@ -0,0 +1,576 @@
#include "Sound/G2IGameSoundManager.h"
#define STARTSOUNDSTACKSIZE 20
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Раздели define и include
И вообще, зачем константа такая? Добавь constexpr просто в класс

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dev Задача программистов

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

Feature: Сделать систему звуков

3 participants